module testY2(q0,q1,q2,InA, d2);
	input q0, q1,q2, InA;
	output d2;
	wire q1bar,q2bar,q0bar, InAbar;
	wire tmp1,tmp2,tmp3,tmp4,tmp5;
	wire tmp6,tmp7,tmp8,tmp9,tmp10;
	wire tmp11,tmp12,tmp13,tmp14,tmp15;
	wire tmp16,tmp17,tmp18,tmp20;

	not1 inst25(q0,q0bar);
	not1 inst26(q1,q1bar);
	not1 inst27(q2,q2bar);
	not1 inst28(InA,InAbar);
/*
//first part of Y2
	nand3 inst16(q2,q1bar, InAbar, tmp14);
//second part of Y2
	nand3 inst17(q2bar,q0, InAbar, tmp15);
	nand3 inst18(q2,q0bar, InA, tmp16);
	nand2 inst19(tmp15,tmp16,tmp17);
	nand2 inst20 (q1, tmp17, tmp18);
//Y2
	nand2 inst21(tmp14,tmp18,d2);
	*/

//first part of Y2
	nor2 inst16(q1bar, q0bar, tmp14);
	nand3 inst17(q2bar, tmp14, InAbar,tmp15);
//second part of Y2
	nand3 inst18(q2, q1bar, InAbar, tmp16);
//thired part of Y2
	xor2 inst19(q0, InAbar, tmp17);
	not1 inst24(tmp17,tmp18);
	nand3 inst20(q2, q1, tmp18,tmp20);
//Y2
	nand3 inst21(tmp15,tmp16,tmp20,d2);

endmodule
